<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
// 英文：
  // element - 元素   ≈   item
  // filter - 过滤器

var students = [
  {name: '小明', age: 19},
  {name: '小红', age: 9},
  {name: '小张', age: 21},
  {name: '小李', age: 17},
];

function isAdult(age) {
  return age >= 18; 
}


// 案例：请过滤出 学生中 的成年人：
/* 方案1：for 循环，逻辑计算

  var adultStudents = [];

  for (var index = 0; index < students.length; index++) {
    var student = students[index];

    if (isAdult(student.age)) {
      adultStudents.push(student);
    }
  }

  console.log(adultStudents);
*/

/* 方案2：数组的迭代方法 - filter
(
  value: { name: string; age: number; }, 
  index: number,
  array: { name: string; age: number; }[]
)
*/
function callbackForFilter(value, index, array) {
  console.log('value', value);
  console.log('index', index);

  // 注：该回调函数 - callback，必须有 return 的值
    // 若 return 值为「真」，即保留该 元素
    // 若 return 值为「假」，即删掉该 元素
  return isAdult(value.age);
}

var result = students.filter(callbackForFilter);

console.log('result', result);
</script>